Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.12.2016, 15:55
Новичок на форуме
Отправить личное сообщение для ajprob Посмотреть профиль Найти все сообщения от ajprob
 
Регистрация: 29.12.2016
Сообщений: 6

Время жизни XMLHttpRequest объекта ограничено?
Есть php-скрипт (назовем его "caller"), запускающий через ajax исполняемый скрипт (назовем его "work"). Work должен работать достаточно долго - минуты или десятки минут. И работает. Но вот Caller своей функцией "onreadystatechange" ждет не более 270 сек.
Т.е. если work отработал менее этого срока, то сообщение о завершении появляется, а если более, то ничего нет, типа "повисло".
Кто-нибудь может прокомментировать природу сего печального ограничения?
Ответить с цитированием
  #2 (permalink)  
Старый 29.12.2016, 16:23
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Какой смысл ждать десятки минут ответа? И у сервера нет в конфигурации "времени ожидания".
Ответить с цитированием
  #3 (permalink)  
Старый 29.12.2016, 16:26
Новичок на форуме
Отправить личное сообщение для ajprob Посмотреть профиль Найти все сообщения от ajprob
 
Регистрация: 29.12.2016
Сообщений: 6

1. Серверный конфиг ожидания - это 30сек ограничение на ожидание ответа по http-запросу. Насколько я понимаю, здесь это не причем.
2. "Смысл" не обсуждается, "надо!".
Хочу понять, где прошито это ограничение.
Ответить с цитированием
  #4 (permalink)  
Старый 29.12.2016, 16:31
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от ajprob
"Смысл" не обсуждается, "надо!".
Браузеру наплевать надо вам или нет, он не будет ожидать десятки минут ответа сервера, а просто закроет соединение и все.

1) Запрос сервера на выполнение задачи.
2) Сервер ставит задачу в поток и возвращает клиенту ее идентификатор.
3) Клиент разрывает соединение.
4) Последующие запросы клиента с интервалом 1 или ... минут проверяют состояние задачи по запрошенному идентификатору.
Ответить с цитированием
  #5 (permalink)  
Старый 29.12.2016, 16:38
Новичок на форуме
Отправить личное сообщение для ajprob Посмотреть профиль Найти все сообщения от ajprob
 
Регистрация: 29.12.2016
Сообщений: 6

Ну так и проверял бы ее, пока она (вызванная задача) не закончит свою работу. На основании чего он закрывает соединение? Стандартное 30сек время ожидания http-запроса здесь перекрыто почти в 10 раз. Откуда берется это ограничение?
Ответить с цитированием
  #6 (permalink)  
Старый 29.12.2016, 17:13
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

https://learn.javascript.ru/ajax-xmlhttprequest

Проверять нужно статус выполнения задачи, а не ожидать пока она выполнится, если ее выполнение длительное. И это кардинально различные понятия.
Ответить с цитированием
  #7 (permalink)  
Старый 29.12.2016, 17:19
Новичок на форуме
Отправить личное сообщение для ajprob Посмотреть профиль Найти все сообщения от ajprob
 
Регистрация: 29.12.2016
Сообщений: 6

Так "onreadystatechange" этим и занимается - проверкой статуса выполнения. Эта функция задана, висит и честно ждет завершения запущенной задачи. Но дольше 270 сек ждать отказывается.
Ответить с цитированием
  #8 (permalink)  
Старый 29.12.2016, 17:21
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Я вам уже все сказал, думайте теперь сами "правильной ли дорогой идете товарищи", В.И. Лёнин.
Ответить с цитированием
  #9 (permalink)  
Старый 29.12.2016, 17:30
Новичок на форуме
Отправить личное сообщение для ajprob Посмотреть профиль Найти все сообщения от ajprob
 
Регистрация: 29.12.2016
Сообщений: 6

Ответа, значит, не знаете, тов. Профессор ...
Ответить с цитированием
  #10 (permalink)  
Старый 29.12.2016, 17:39
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от ajprob
Ответа, значит, не знаете
Я вам уже его написал. Держать открытым соединение зря десятки минут, да не дай бог это еще и для множества пользователей, ну это даже и назвать не знаю как. Другое дело если бы операция на сервере еще бы отдавал клиенту отчет (пусть это к примеру тики), куда еще ни шло, но просто сидеть и ждать, это нечто.

Есть cron, не сложно поставить задачу на выполнение, а клиенту нужно то всего лишь раз в N минут проверять ее статус.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое добавление объекта во время анимации three.js Ni55aN Общие вопросы Javascript 0 11.11.2014 22:24
Position fixed, но динамический по оси ОХ tvixa Элементы интерфейса 4 09.09.2013 15:39
Время жизни блока (сообщения) ILYA609 jQuery 1 18.03.2010 00:42
Можно ли получить имя экземпляра объекта внутри самого объекта? Ichigeki Общие вопросы Javascript 9 14.11.2008 19:00